import { defineStore } from 'pinia'
import { useProductsStore } from './productsStore';
export const useCartStore = defineStore({
  id: 'cart',
  state: () => ({
    cartItems: []//购物车条目的数组
  }),
  getters: {
    totalQuantity(state) {
      return state.cartItems.reduce((acc, item) => acc + item.quantity, 0);
    },
    totalPrice(state) {
      return state.cartItems.reduce((acc, item) => acc + item.product.price * item.quantity, 0);
    }
  },
  actions: {
    addToCart(product) {
      //查找待添加的商品在购物车列表中是否存在
      const productInCart = this.cartItems.find(item => item.product.id === product.id);
      //如果存在的话说明此商品已经存在于购物车里面了
      if (productInCart) {
        //则只需要让此购物车条目数量加1
        productInCart.quantity++;
      } else {
        //向购物车列表中添加一个购物车条目，商品对象，数量
        this.cartItems.push({ product, quantity: 1 });
      }
      //添加完后，要在商品列表中减去1个库存
      const productsStore = useProductsStore();
      //到商品列表中查找与当前添加到购物车中的商品相同的商品
      const productInStore = productsStore.products.find(item => item.id === product.id);
      //如果找到了，则把它的库存减少1
      if (productInStore) productInStore.stock--;
    }
  },
  persist: {
    enabled: true,//开始持久化仓库
    strategies: [//指定持久化的方式或者说策略
      {
        key: 'cart',//保存的key
        storage: localStorage//存到哪里去
      }
    ]
  }
});
